home *** CD-ROM | disk | FTP | other *** search
/ Gigarom 1 / Gigarom Macintosh Archives (Quantum Leap)(CDRM1080320)(1993).iso / FILES / HYP / T-Z / Windoids.cpt / Windoid 1.7 / card_13037.txt < prev    next >
Text File  |  1989-04-19  |  24KB  |  505 lines

  1. -- card: 13037 from stack: in.7
  2. -- bmap block id: 13182
  3. -- flags: 0000
  4. -- background id: 10029
  5. -- name: 
  6.  
  7.  
  8. -- part contents for background part 11
  9. ----- text -----
  10. ¬© Copyright Apple Computer Co, Inc. 1988
  11. __________________________________________________________
  12.  
  13. These notes contain information of interest to stack designers and programmers that are not covered in the general HyperCard Version 1.2 Release Notes Stack.  Features visible to the average user are described in the Release Notes Stack.  The HyperCard version 1.2.1 Final Programmer's Notes  include the following:
  14.  
  15. ‚Ä¢  New HyperTalk synonyms.
  16. ‚Ä¢  New HyperTalk commands, properties and functions.
  17. ‚Ä¢  Using "peeking" for fast script review and editing.
  18. ‚Ä¢  Performance improvements in finding text and navigating stacks.
  19. ‚Ä¢  User-visible bug fixes.
  20. ‚Ä¢  Miscellaneous notes on write-protected media and stacks, and related 
  21.     design considerations.
  22.  
  23. Briefly, HyperCard 1.2.1 includes the following new features:
  24. ‚Ä¢  On locked stacks, HyperCard 1.2.1 distinguishes between user actions and those of HyperTalk scripts.  While users are prevented from making changes to a locked stack (unless the new property userModify is set to true), its scripts can perform most operations.  Changes created in locked stacks are temporary-they disappear when the user leaves the card to which changes have been made.  Specific restrictions imposed by locked media are explained in detail later in this document.
  25. ‚Ä¢  Performance and robustness in handling large stacks has been greatly improved.  To take advantage of these improvements, stacks created with older versions of HyperCard should be compacted twice with version 1.2.1.
  26. ‚Ä¢  Pictures on cards and backgrounds can now be hidden and shown.  New HyperTalk commands allow stack designers to hide or show art 
  27. (just like buttons or fields) as part of a HyperTalk script.
  28. ‚Ä¢  Visual effects work with HyperTalk"s new Unlock Screen command.  Stack designers may now have a button, field or picture appear or disappear with a visual effect rather than just "popping up."
  29. ‚Ä¢   Many HyperTalk synonyms, commands and properties have been added or extended.
  30. ‚Ä¢  HyperCard 1.2.1 allows fast access to HyperTalk scripts by "peeking."  Users and designers may quickly view and edit scripts.
  31. __________________________________________________________
  32.  
  33. New HyperTalk Abbreviations:
  34.  
  35. ‚Ä¢  cd = card (get the number of this cd)
  36. ‚Ä¢  bg = background (number of cards of this bg)
  37. ‚Ä¢  fld = field (hide fld 3)
  38. ‚Ä¢  cds = cards (number of cds)
  39. ‚Ä¢  bgs = backgrounds (number of bgs)
  40. ‚Ä¢  flds = fields (number of flds)
  41. ‚Ä¢  btns = buttons (number of btns)
  42. ‚Ä¢  second = seconds (wait 1 second)
  43. ‚Ä¢  sec = secs (wait 1 sec)
  44. ‚Ä¢  tick = ticks (wait 1 tick)
  45. ‚Ä¢  pict = picture (hide card pict)
  46. ‚Ä¢  grey = gray (dissolve to grey)
  47. __________________________________________________________
  48.  
  49. New HyperTalk Messages
  50.  
  51. ‚Ä¢  returnInField
  52. This message is sent to the field when the Return key is pressed while there is an insertion point or selection in a field.  If returnInField is not intercepted by a handler and the insertion point or selection is on the last line of the field, HyperCard will check to see if the field has "autoTab" set to true.  If so, HyperCard sends a "tabKey" message to the current field.  If the tabKey message is not intercepted by a handler, the cursor will move to the next field.  If the insertion point or selection is not on the last line of the field, or if autoTab is false, a carriage return will be inserted in the text of the field.
  53.  
  54. on returnInField -- when the Return key is pressed prevent insertion
  55.   -- of carriage returns anywhere in the field
  56. end returnInField
  57.  
  58. ‚Ä¢  enterInField
  59. The enterInField message is sent to a field when the Enter key is pressed while there is an insertion point or selection in a field.  If enterInField is not intercepted by a handler and the contents of the field have been changed, HyperCard sends a closeField message. 
  60.  
  61. on enterInField   -- when the enterKey is pressed find the field
  62.   --contents in another stack
  63.  get me
  64.  go to stack "Address"
  65.  find it
  66. end enterInField
  67. __________________________________________________________
  68.  
  69. New HyperTalk Commands
  70.  
  71. ‚Ä¢  Find Whole "string to be found"
  72. Unlike the general Find command, Find Whole uses both word starts and word endings in finding the chosen text.  Find Whole also uses space characters in the string.  See the HyperCard Version 1.2 Release Notes stack for a description of Find Whole.
  73.  
  74. ‚Ä¢  Find String "string to be found"
  75. Find String finds characters specified in a string, ignoring word boundaries.
  76.  
  77. Find String "ple"  -- would find the string of characters "ple"
  78.  
  79. For strings without spaces, it works the same way as Find Chars.  When a string has a space followed by at least three other characters, Find String uses HyperCard"s fast search algorithm.
  80.  
  81. Find String "ple" offers the same performance as  
  82. Find Chars "ple".
  83.  
  84. Find String "ple comp"  is much faster because the space and characters in "ple comp" invoke HyperCard"s fast search.  
  85.  
  86. ‚Ä¢  hide picture of <card expression>
  87. This command will hide the card picture specified in the card expression.  For example:
  88.  
  89. on mouseUp
  90.   hide picture of card 3
  91. end mouseUp
  92.  
  93. ‚Ä¢  hide picture of <background expression>
  94. This command will hide the background picture specified in the background expression.  For example:
  95.  
  96. on mouseUp
  97.   hide picture of background 3
  98. end mouseUp
  99.  
  100. ‚Ä¢  show picture of <card expression>
  101. This command will show the card picture specified in the card expression.  For example:
  102.  
  103. on mouseUp
  104.   show picture of card 3
  105. end mouseUp
  106.  
  107. ‚Ä¢  show picture of <background expression>
  108. This command will show the background picture specified in the background expression.  For example:
  109.  
  110. on mouseUp
  111.   show picture of background 3
  112. end mouseUp
  113.  
  114. ‚Ä¢  hide card picture
  115. This hides the picture on the current card.  For example :
  116.  
  117. on mouseUp
  118.   hide card picture
  119. end mouseUp
  120.  
  121. ‚Ä¢  show card picture
  122. This shows the picture on the current card.  For example :
  123.  
  124. on mouseUp
  125.   show card picture
  126. end mouseUp
  127.  
  128. ‚Ä¢  hide background picture
  129. This hides the picture of the current background.  For example :
  130.  
  131. on mouseUp
  132.   hide background picture
  133. end mouseUp
  134.  
  135. ‚Ä¢  show background picture
  136. This shows the picture of the current background.  For example :
  137.  
  138. on mouseUp
  139.   show background picture
  140. end mouseUp
  141.  
  142. ‚Ä¢  lock Screen
  143. The lock  Screen command performs the same function as "set lockScreen to true."  For example:
  144.  
  145. on mouseUp
  146.   lock screen
  147. end mouseUp
  148.  
  149. ‚Ä¢  unlock Screen [with visual effect]
  150. The unlock Screen command performs basically the same function as "set lockScreen to false".   In addition, unlock  Screen can take a single visual effect as an argument.  The visual effect is invoked as the screen is unlocked ("set lockScreen to false" doesn"t invoke visual effects).  
  151.  
  152. on mouseUp
  153.   set lockScreen to true
  154.   show card button 3
  155.   unlock screen with dissolve slowly
  156. end mouseUp
  157.  
  158. Note: Visual effects cannot be compounded when using unlock Screen.  The visual effects preceding the unlock Screen command shown below will not be executed until a Go command  is encountered (or until HyperCard has sufficient idle time to flush them).
  159.  
  160. on mouseUp
  161.   set lockScreen to true
  162.   show card button 3
  163.   visual effect barn door open   -- not invoked by unlock Screen
  164.   visual effect dissolve to black -- not invoked by unlock Screen
  165.   unlock Screen with checkerboard
  166. end mouseUp
  167.  
  168. In general, visual effects should be as close as possible to the Go command that will use them.  Here is an example of multiple visual effects in a single script:
  169.  
  170. on mouseUp
  171.  visual effect zoom open -- will execute with the Go command
  172.  go to next card
  173.  lock screen
  174.  show card field 3
  175.  unlock Screen with dissolve -- will work with the unlock Screen
  176.   -- command 
  177. end mouseUp 
  178.  
  179. ‚Ä¢  select <button expression>
  180. Chooses the Button tool and selects the specified button.  For example:
  181.  
  182. select card button id 78 -- chooses the Button tool and selects the
  183.   -- button
  184. This works the same way as the following:
  185. choose button tool
  186. click at the loc of bkgnd button 3  -- select background button
  187.   -- number 3
  188.  
  189. This command is especially useful for operations on buttons covered by other objects.  It does not work for hidden buttons and works only when the user level is set to authoring (4) or higher.
  190.  
  191. ‚Ä¢  select <field expression>
  192. Chooses the Field tool and selects the specified field.   This command is especially useful for operations on fields covered by other objects.  It does not work for hidden fields and works only when the user level is set to authoring (4) or higher.
  193.  
  194. ‚Ä¢  select {before|after} <chunk expression> of <field expression>
  195. Selects (highlights) text in a specified field as though the user had clicked or dragged over the specified text.  "Before" or "after" can be used to place an insertion point at a specific location in a field.  A chunk expression can be used to select a range of words or characters in a specified field.  For example:
  196.  
  197. select word 3 of field 5 -- highlights the third word of background
  198.   -- field 5
  199. select before char 10 of field 3 -- sets the blinking insertion point
  200.   -- between characters 9
  201.   -- and 10 of background field 3
  202. select char 1 to 5 of bkgnd field 1 -- highlights the first five
  203.   -- characters of background field 1
  204. select word 2 to 4 of card field 3 -- highlights the second, third and
  205.   -- fourth words of card field 3
  206. select item 8 of bkgnd field 7 -- highlights the eighth item in card
  207.   -- field 3
  208.   -- remember, items are always separated by commas
  209.  
  210. If a chunk expression of the form "charStart > charEnd"
  211.  is used, a blinking insertion point will be set.  For example:
  212.  
  213. select char 10 to 9 of card field 13  -- sets an insertion point between
  214.   -- characters 9 and 10; no text is highlighted
  215.  
  216. If you "select" past the end of the text in the field, carriage returns will be inserted, and an insertion point will be set after the last return.  For example, if a field has only three lines of text in it, and you select line 5, two carriage returns will be inserted and your cursor will be set on line 5 of the field.
  217.  
  218. select line 5 of bkgnd field id 8 -- puts the insertion point at line 5
  219.   -- inserting any carriage returns needed to fill empty lines
  220.  
  221. Chunk expressions may also be used to select text in the message box.  For example:
  222.  
  223. select word 3 of msg -- highlights the third word of text in the
  224.   -- message box
  225.  
  226. ‚Ä¢  select {before|after} text of <field expression>
  227. Selects all the text in a specified field .  "Before" or "after" can be used to place an insertion point at the beginning or end of the text in a field.  For example:
  228.  
  229. select after text of card field 7 -- sets the insertion point after the
  230.   -- last character of card field 7 
  231. select text of bkgnd field 3 -- highlights all the text of background
  232.   -- field 3
  233.  
  234. ‚Ä¢  select <me | target>
  235. "Select" may take "me" or "target" as arguments for selecting objects or their contents.  For example:
  236.  
  237. on mouseUp
  238.   select me -- chooses the appropriate tool and selects the object
  239.   -- when the mouse clicks on it
  240. end mouseUp
  241.  
  242. on mouseEnter
  243.   select text of me -- selects all the text of a field when the mouse
  244.   -- enters it
  245. end mouseEnter
  246.  
  247. on mouseUp
  248.   select the target -- chooses the appropriate tool and selects the
  249.   -- object
  250. end mouseUp
  251.  
  252. ‚Ä¢  select empty
  253. Use "select empty" to deselect highlighted text or remove a blinking insertion point.
  254.  
  255. ‚Ä¢  set cursor to <watch | none | hand | arrow | iBeam | plus | cross | busy>
  256. Alternate cursors may be used via the "set cursor to <name or number of cursor>" command, but are shown only for the duration of the handler.  The cursor is always reset to the currently chosen tool (Browse, Button or Field) at idle.
  257.  
  258. on mouseUp
  259.   set cursor to watch -- show the watch cursor
  260.   repeat until the mouse is down
  261.     go to next card
  262.   end repeat
  263. end mouseUp
  264.  
  265. set cursor to none -- show the HyperCard transparent cursor
  266. set cursor to hand -- show the HyperCard browse tool cursor 
  267. set cursor to arrow -- show the Macintosh arrow cursor
  268. set cursor to iBeam -- show the I-beam cursor
  269. set cursor to plus -- show the plus cursor
  270. set cursor to cross -- show the cross cursor
  271.  
  272. The "busy" cursor is HyperCard"s beach ball.  The beach ball will turn 
  273. 1/8 each time it is set, so it spins when set inside repeat loops.
  274.  
  275. on mouseUp
  276.   repeat for 100 times
  277.     set cursor to busy -- show HyperCard"s beach ball cursor (it will
  278.     -- spin)
  279.     add 1 to bkgnd field 1
  280.   end repeat
  281. end mouseUp
  282. __________________________________________________________
  283.  
  284. New HyperTalk Functions & Properties:
  285.  
  286. ‚Ä¢  cantModify
  287. cantModify is a stack property which prevents users from compacting, deleting or changing the contents of a stack.  See the HyperCard Version 1.2 Release Notes Stack for a detailed description.  For stacks that are not otherwise locked (on a CD-ROM, locked floppy, locked by AppleShare or the Finder), scripts may get and set CantModify.  For example:
  288.  
  289. set cantModify of stack "MyStack" to true
  290.   -- prevents users from modifying the stack
  291.  
  292. ‚Ä¢  userModify
  293. userModify is a global property which allows the user to type in fields or paint when the stack is locked.  Changes made by the user or script will be discarded upon leaving the card.  userModify is set to false whenever the user leaves a stack; it is ignored when a stack is unlocked. This example allows a user to type in a specific field on a locked stack:
  294.  
  295. on openField -- user can click in the specified field or press Tab
  296.   set userModify to true
  297. end openField
  298.  
  299. This next example prevents typing in fields which don't contain the openField handler shown above:
  300.  
  301. on closeField -- user can click outside the specified field or press Tab
  302.   set userModify to false
  303. end closeField
  304.   -- closeField is only sent when the field contents have been changed
  305.  
  306. ‚Ä¢  cantDelete
  307. Scripts may now get and set the cantDelete property for stacks, backgrounds and cards.  For example:
  308.  
  309. set cantDelete of this cd to true  -- prevents deletion of the card
  310. set cantDelete of this bg to true  -- prevents deletion of the
  311.   -- background
  312. set cantDelete of this stack to true  -- prevents deletion of the stack
  313.  
  314. ‚Ä¢  showPict
  315. When showPict is true, the card or background picture is visible.  If false, the picture is hidden.  Scripts may get or set showPict.  For example:
  316.  
  317. get showPict of background 1
  318. if it is "true" then...
  319.  
  320. ‚Ä¢  autoTab
  321. See the HyperCard Version 1.2 Release Notes stack for a functional description.  Scripts may get or set autoTab.  For example:
  322.  
  323. set autoTab of field 3 to true
  324.  
  325. ‚Ä¢  number of cards of <background expression>
  326. This function returns the number of cards of a specified background.  For example:
  327.  
  328. get the number of cards of background 3
  329.  
  330. ‚Ä¢  the foundText
  331. Returns the characters enclosed by the box after the Find command has executed.  For example:
  332.  
  333. find "Will"
  334. put the foundText -- puts "Will" or the whole word it was found
  335.   -- in(e.g. "William") into the msg box
  336.  
  337. ‚Ä¢  the foundChunk
  338. Returns a chunk expression for where the string was found.  For example, if background field 6 contains the phrase "Now is the time," then:
  339.  
  340. find "Now"
  341. put the foundChunk -- puts "char 1 to 3 of bkgnd field 6" into the
  342.   -- message box
  343.  
  344. The foundChunk takes the form: char <number> to <number> of <card | bkgnd> field <number>.
  345.  
  346. ‚Ä¢  the foundLine
  347. Returns an expression for  the starting line where the string was found.  For example, if line 2 of card field 3 contains the result of the Find:
  348.  
  349. find "Tiger"
  350. put the foundLine -- puts "line 2 of card field 3" into the message
  351.   -- box
  352.  
  353. The foundLine takes the form:  line <number> of <card | bkgnd> field 
  354. <number>.  HyperCard recognizes only lines terminated by a carriage return.  A line that wraps and is displayed as two lines is still one line as far as HyperCard is concerned.
  355.  
  356. ‚Ä¢  the foundField
  357. Returns an expression for the field where the string was found.   For example, if the Find command finds the text in the second line of the third card field:
  358.  
  359. put the foundField -- puts "card field 3" into the message box
  360.  
  361. The foundText, foundChunk, foundLine and foundField will be empty when a Find command fails because an empty string is returned.
  362.  
  363. ‚Ä¢  the selectedText
  364. Similar to "the selection," returns the text that is currently highlighted but is not a container into which data can be stuffed.
  365.  
  366. ‚Ä¢  the selectedChunk
  367. Returns a chunk expression for the range of currently highlighted characters.  For example, if a five letter word in card field 9 is selected:
  368.  
  369. put the selectedChunk -- puts "char 1 to 5 of card field 9" into the
  370.   -- message box.
  371.  
  372. The expression is of the form: char <number> to <number> of <card | background> field <number>.
  373.  
  374. ‚Ä¢  the selectedLine
  375. Returns an expression for the line where the currently selected text is, using the form: 
  376.  
  377. line <number> of <card | background> field <number>.
  378.  
  379. ‚Ä¢  the selectedField
  380. Returns an expression for the field where the currently selected text is of the form:
  381.  
  382. <card | background> field <number>.
  383.  
  384. ‚Ä¢  left of <button expression> <field expression> <window expression>
  385. Returns item 1 of the rect (left, top, right, bottom) of a specified object.  For example:
  386.  
  387. put left of card button id 456 -- puts the value of the left coordinate
  388.   --  of the rectangle of card button id 456
  389. set left of bkgnd field 5 to 20 -- sets the left coordinate of the
  390.   -- rectangle of background field 5 to 20 pixels from the left edge of 
  391.   -- HyperCard"s window
  392. put left of the card window into MyVar -- puts the left coordinate of
  393.   -- the HyperCard window into the local variable "MyVar"
  394. get left of tool window -- returns the left coordinate of the tool
  395.   -- window
  396.  
  397. "Set <left | top | right | bottom> of <expression> to <number>"  will move the object so that the specified  parameter is at the specified coordinate.  It is also much faster than using "set loc of <expression>."
  398.  
  399. HyperCard"s card window uses global coordinates from the Macintosh screen where 0,0 is the top left corner of the screen the menu bar is in.  HyperCard windows  (card, message, tool and pattern) and objects 
  400. (button, field) and the Loc (mouseLoc, clickLoc)  use local coordinates based on HyperCard"s window where 0,0 is the top left corner of HyperCard"s card window.  HyperCard buttons and fields set with negative coordinates are preserved, but cannot be seen or get mouse clicks.
  401.  
  402. ‚Ä¢  top of <button expression> <field expression> <window expression>
  403. Returns item 2 of the rect of a specified object. 
  404.  
  405. ‚Ä¢  right of <button expression> <field expression> <window expression>
  406. Returns item 3 of the rect of a specified object. 
  407.  
  408. ‚Ä¢  bottom of <button expression> <field expression> <window expression>
  409. Returns item 4 of the rect of a specified object. 
  410.  
  411. ‚Ä¢  topLeft of <button expression> <field expression> <window expression>
  412. Returns items 1 and 2 of the rect (l, t, r, b) of a specified object.  This is the top left corner of the object. 
  413.  
  414. ‚Ä¢  bottomRight of <button expression> <field expression> <window expression>
  415. Returns items 3 and 4 of the rect of a specified object.  This is the  bottom right corner of the object. 
  416.  
  417. ‚Ä¢  botRight of <button expression> <field expression> <window expression>
  418. botRight is an abbreviation for bottomRight.
  419.  
  420. ‚Ä¢  width of <button expression> <field expression> <window 
  421. expression>
  422. Returns the width of the specified object.  For example:
  423.  
  424. put width of card button id 456 -- puts the width of card button 
  425.   -- id 456
  426. set width of bkgnd field 5 to 90 -- sets the width of background 
  427.   --  field 5 to 90 pixels
  428. put width of the card window into ABC -- puts the width of
  429.   -- HyperCard"s window into the local variable "ABC"
  430.  
  431. When the script changes the width of the specified object, HyperCard preserves the loc (center coordinate) of the object, divides the specified width by 2, sets the left to the dividend and sets the right to (left + the specified width).  For example:
  432.  
  433. get the width of card button 18 -- put the width of the button into it
  434. set width of card button 18 to it + 20  
  435. -- set left to (item 1 of loc - ((it + 20)/2))
  436.  
  437. When the width of a button or field is changed by an odd amount, HyperCard rounds the dividend down and adds the remainder (1) to the right coordinate.
  438. When the width of a button or field equals 0 or goes negative, the object continues to exist, but cannot be seen or get mouse clicks.
  439.  
  440. ‚Ä¢  height of <button expression> <field expression> <window expression>
  441. Returns the height of the specified object.
  442. When the script changes the height of the specified object, HyperCard preserves the loc (center coordinate) of the object, divides the specified height by 2, sets the top to the dividend and sets the bottom to (top + the specified height).  For example:
  443.  
  444. get the height of bkgnd field 11 -- put the height of the field into it
  445. set width of bkgnd field 11 to it + 36
  446.   -- set top to (item 2 of loc - ((it+36)/2))
  447.  
  448. When the height of a button or field is changed by an odd amount, HyperCard rounds the dividend down and adds the remainder (1) to the bottom coordinate.
  449. When the height of a button or field equals 0 or goes negative, the object continues to exist, but cannot be seen or get mouse clicks.
  450. Neither the height nor width of HyperCard"s window objects (card, message, tools, pattern) can be changed.
  451.  
  452. ‚Ä¢  the screenRect
  453. Returns the rect of the screen being used (left, top, right, bottom) in global coordinates.  When there is more than one monitor, the function returns values for the screen HyperCard"s menu bar is in.
  454.  
  455. ‚Ä¢  the long version [of HyperCard]
  456. Returns the HyperCard version number in the standard Macintosh version resource (see Inside Macintosh for explanations of the format).  In HyperCard 1.2.1:
  457.  
  458. put the long version  -- puts "01208000" into the message box.
  459.  
  460. ‚Ä¢  the version of <stack expression>
  461. Returns a five item string listing:
  462. 1.  the version of HyperCard which created the stack.
  463. 2.  the version of HyperCard last used to compact the stack.
  464. 3.  the oldest version of HyperCard which changed the stack since it was last compacted.
  465. 4.  the version of HyperCard which last changed the stack.
  466. 5.  most recent modification date of the stack (in seconds)
  467. Note:  This item is only updated when the stack is closed, not as changes are made.  To confirm a change to the modification date, leave the stack, then reopen it and check item 5 of the long version of the stack.
  468. Items 1 to 4  will be set to 00000000 if the version of HyperCard is less than 1.2.1.
  469. For a stack created with HyperCard version 1.1, then edited and compacted with version 1.2.1 things would look something like this:
  470. put the version of stack "old stack" -- would put
  471.   --"00000000,01208000,01208000,01208000,2660687462"
  472.   -- into the message box
  473. Scripts can convert item 5 into a date and time to determine when the stack was last modified, or check items 1 through 4 to find out whether it had been created, changed or compacted with a version of HyperCard older than 1.2.1.
  474. __________________________________________________________
  475.  
  476. New HyperTalk Operator:
  477.  
  478. ‚Ä¢  within
  479. Takes the form: <point expression> is {not} within <rect expression> and tests whether a point is within a specific rectangle.  For example:
  480.  
  481. on mouseUp
  482.   -- tests the mouseLoc and beeps if it is not inside the button rect
  483.   wait until the mouseLoc is not within rect of me
  484.   repeat until the mouseLoc is within rect of me
  485.     beep
  486.   end repeat
  487. end mouseUp
  488.  
  489. Ô£ø CONTINUED on next card
  490.  
  491. -- part contents for background part 17
  492. ----- text -----
  493. HyperCard v1.2.1 final programmer's notes ‚Ä¢ part 1
  494.  
  495. -- part contents for background part 18
  496. ----- text -----
  497.  
  498.  
  499.  
  500. ‚Ä¢ by
  501. Mike Holm
  502.  
  503. -- part contents for background part 19
  504. ----- text -----
  505. volume 1 ‚Ä¢  number  7  ‚Ä¢  card 8  ‚Ä¢